This invention relates generally to data communications and, more particularly, to a method for controlling isochronous data communications within a digital system having a bus architecture that complies with the IEEE-1394 Standard for a High Performance Serial Bus.
The components of a computer or other digital system are typically coupled to a common bus for communicating information to one another. Various bus architectures are known in the prior art, and each bus architecture operates according to a communications protocol that defines the manner in which data transfer between components is accomplished.
The Institute of Electrical and Electronic Engineers (IEEE) has promulgated a number of different bus architecture standards including IEEE standards document 1394, entitled Standard for a High Performance Serial Bus (hereinafter xe2x80x9cIEEE-1394 Serial Bus Standardxe2x80x9d). A typical serial bus having the IEEE-1394 standard architecture is comprised of a multiplicity of nodes that are interconnected via point-to-point links, such as cables, that each connect a single node of the serial bus to another node of the serial bus. Data packets are propagated throughout the serial bus using a number of point-to-point transactions, wherein a node that receives a packet from another node via a first point-to-point link retransmits the received packet via other point-to-point links. A tree network configuration and associated packet handling protocol ensures that each node receives every packet once. The serial bus of the IEEE-1394 Serial Bus Standard may be used as an alternate bus for the parallel backplane of a computer system, as a low cost peripheral bus, or as a bus bridge between architecturally compatible buses.
A communications protocol of the IEEE-1394 Serial Bus Standard specifies two primary types of bus access: asynchronous access and isochronous access. Asynchronous access may be either xe2x80x9cfairxe2x80x9d or xe2x80x9ccycle masterxe2x80x9d. Cycle master access is used by nodes that need the next available opportunity to transfer data. Isochronous access is used by nodes that require guaranteed bandwidth, for example, nodes transmitting video or audio data. The transactions for each type of bus access are comprised of at least one xe2x80x9csubactionxe2x80x9d, wherein a subaction is a complete one-way transfer operation.
In the case of, for example, digital video data transfers within digital systems conforming to the IEEE-1394 Serial Bus Standard, the video data may be transferred for example, between a mass storage device (e.g., a digital memory such as a hard disk drive, a flash memory device or other storage medium) and a digital video camera or other recorder (e.g., to store an edited video sequence) under the control of a computer processor or other device (e.g., a DMA controller). The video data is transferred as a series of frames, each frame being made up of a number of data packets. The individual data packets include a number header fields (which include various information regarding the data as well as addressing information) as well as the video data itself.
In order to ensure that each frame of the video data is played out in the proper sequence, the frames must be xe2x80x9ctime stampedxe2x80x9d with an appropriate frame presentation time (e.g., measured in terms of xe2x80x9ccycle timexe2x80x9d of an isochronous transaction on a bus complying with the IEEE-1394 Serial Bus Standard) when they are recorded. The frame presentation time for individual frames of data is recorded in a particular header field, referred to as an SYT field, of the first packet of each frame (note that for non-video applications, the concept of a xe2x80x9cframexe2x80x9d is not used and the SYT field may be located and stamped in each packet or only some of the packets of a data transfer). In essence, the frame presentation time xe2x80x9cstampedxe2x80x9d in the SYT field of the packet header is an indication to the receiver of the time that the frame should be played out. For digital video data, the frame presentation time may be up to 450 xcexcsec. in the future. That is, from the point of view of the receiver, the SYT field frame presentation stamp value for a given frame of data must be within 450 xcexcsec. of the time the first packet in that frame is received. Thus, in the example given above, when the digital video data is transferred from the mass storage device to the recording medium, the computer processor or other device which is controlling the transfer must insert appropriate frame presentation time stamp (or SYT) values into the SYT fields of the first packet in each frame of the video data. Note that the 450 xcexcsec. requirement is specific to video data and other types of data, e.g., MIDI audio data, may have other frame presentation time requirements.
In the past, such time stamping operations have required the use hardware interrupt procedures to determine a current cycle time which could then be written to the SYT field of a packet. However, there are times at which such interrupt procedures cannot be completed within the 450 xcexcsec. (e.g., for digital video applications) time limitation. As a result, some frames of data are xe2x80x9clostxe2x80x9d and any resulting display of the entire video data stream is degraded. It would therefore be desirable to have other solutions which do not rely on the hardware interrupt procedures of the past for time stamping the SYT fields of data in a digital network complying with the IEEE-1394 Serial Bus Standard.
Methods for controlling isochronous data communications within a digital system having a bus architecture that complies with the IEEE-1394 Standard for a High Performance Serial Bus are described.
In one embodiment, a presentation time stamp field of a packet of data for transmission in a digital network is set with a presentation time value determined according to a computed packet rate for the data.
In a further embodiment, a presentation time stamp field of a first packet of a second frame of data for transmission in a digital network is set with a presentation time value determined according to a computed packet rate for the data. The packet rate may be computed by measuring a difference between a desired presentation time value of a first packet in a first frame of the data and an actual transmission time of the first packet of the first frame. The first frame preceding the second frame in time of transmission within the network.